import os
from flask import Flask
from flask_cors import CORS
from flask_sqlalchemy import SQLAlchemy
from dotenv import load_dotenv
from config.settings import config

# 加载环境变量
load_dotenv()

# 初始化数据库实例
db = SQLAlchemy()

def create_app(config_name=None):
    """创建和配置 Flask 应用实例"""
    app = Flask(__name__)
    
    # 配置应用
    if config_name is None:
        config_name = os.environ.get('FLASK_ENV', 'development')
    
    # 使用settings.py中定义的配置映射
    app.config.from_object(config[config_name])
    
    # 可以从环境变量覆盖配置（Flask 2.0+ 特性）
    app.config.from_prefixed_env()
    
    # 初始化扩展
    db.init_app(app)
    CORS(app)
    
    # 注册蓝图
    from app.api import api_bp
    app.register_blueprint(api_bp, url_prefix='/rag')
    
    # 创建数据库表
    with app.app_context():
        db.create_all()
    
    return app